import {config} from './../config/index.js'
import store from './../store/index.js'

//////////////////////////////业务请求开始//////////////////////////////////
// 同时发送异步代码的次数，防止一次点击中有多次请求，用于处理
let ajaxTimesBiz = 0;
// 封装请求方法，并向外暴露该方法
export const bizRequest = (options) => {
	// 解构请求头参数
	let header = {...options.header};
	header['content-type'] = 'application/json;charset=utf-8'
	ajaxTimesBiz++;
	// 显示加载中 效果
	uni.showLoading({
		title: "加载中",
		mask: true,
	});
	return new Promise((resolve,reject) => {
		uni.request({
			url: config.BIZ_BASE_URL + options.url,
			method: options.method || 'GET',
			data: options.data || {},
			header,
			success: (res) => {
				if (res.data.info === '用户未登录') {
					store.state.message.messageComponent.error('登录信息已过期');
					setTimeout(() => {
						store.commit('logout')
					}, 2000)
					return;
				}
				resolve(res);
			},
			fail: (err) => {
				store.state.message.messageComponent.error('网络请求失败')
				reject(err);
			},
			// 完成之后关闭加载效果
			complete:() => {
				ajaxTimesBiz--;
				if (ajaxTimesBiz === 0) {
					// 关闭正在等待的图标
					uni.hideLoading();
				}
			}
		})
	})
}
//////////////////////////////业务请求结束//////////////////////////////////


//////////////////////////////上传请求开始//////////////////////////////////
export const uploadRequest = (options) => {
	// 解构请求头参数
	let header = {...options.header};
	return new Promise((resolve,reject) => {
		uni.request({
			url: config.BIZ_BASE_URL + options.url,
			method: options.method || 'GET',
			data: options.data || {},
			header,
			success: (res) => {
				if (res.data.info === '用户未登录') {
					store.state.message.messageComponent.error('登录信息已过期');
					setTimeout(() => {
						store.commit('logout')
					}, 2000)
					return;
				}
				resolve(res);
			},
			fail: (err) => {
				reject(err);
			}
		})
	})
}
//////////////////////////////上传请求结束//////////////////////////////////